ãœãããŠã§ã¢éçºã«ãããå¯èªæ§ãšä¿å®æ§ãé«ããã¯ãªãŒã³ã³ãŒãã®ååãæ¢æ±ããŸããäžçäžã®ããã°ã©ããŒã«æ©æµãããããããã®ãã¹ããã©ã¯ãã£ã¹ã§ãã
ã¯ãªãŒã³ã³ãŒãïŒã°ããŒãã«ãªéçºè ã³ãã¥ããã£ã®ããã®èªã¿ãããå®è£ ã®æè¡
ãã€ãããã¯ã§çžäºæ¥ç¶ããããœãããŠã§ã¢éçºã®äžçã§ã¯ãæ©èœçã§ããã ãã§ãªããä»ã®äººã«ã容æã«çè§£ã§ããã³ãŒããæžãèœåãæãéèŠã§ãããããã¯ãªãŒã³ã³ãŒãã®æ¬è³ªã§ããã¯ãªãŒã³ã³ãŒããšã¯ããœãããŠã§ã¢å®è£ ã«ãããå¯èªæ§ãä¿å®æ§ãã·ã³ãã«ããéèŠããäžé£ã®ååãšå®è·µã§ããã°ããŒãã«ãªéçºè ã«ãšã£ãŠãã¯ãªãŒã³ã³ãŒããæ¡çšããããšã¯åãªã奜ã¿ã®åé¡ã§ã¯ãªãã广çãªã³ã©ãã¬ãŒã·ã§ã³ãè¿ éãªéçºãµã€ã¯ã«ããããŠæçµçã«ã¯å ç¢ã§ã¹ã±ãŒã©ãã«ãªãœãããŠã§ã¢ãœãªã¥ãŒã·ã§ã³ãåµé ããããã®åºæ¬çãªèŠä»¶ãªã®ã§ãã
ãªãã¯ãªãŒã³ã³ãŒãã¯ã°ããŒãã«ã«éèŠãªã®ãïŒ
ãœãããŠã§ã¢éçºããŒã ã¯ãç°ãªãåœãæåãã¿ã€ã ãŸãŒã³ã«ãŸããŸã忣ããŠããŸãããã®ã°ããŒãã«ãªåæ£ã¯ãã³ãŒãããŒã¹å ã§ã®å ±éèšèªãšçè§£ã®å¿ èŠæ§ãå¢å¹ ãããŸããã³ãŒããã¯ãªãŒã³ã§ããã°ãããã¯æ®éçãªèšèšå³ãšããŠæ©èœãã倿§ãªèæ¯ãæã€éçºè ããã®æå³ãè¿ éã«ææ¡ããæœåšçãªåé¡ãç¹å®ããåºç¯ãªãªã³ããŒãã£ã³ã°ãçµ¶ãéãªã説æãªãã«å¹æçã«è²¢ç®ããããšãã§ããŸãã
éçºããŒã ãã€ã³ãããã€ãããã©ãžã«ã®ãšã³ãžãã¢ã§æ§æãããŠããã·ããªãªãèããŠã¿ãŸããããã³ãŒãããŒã¹ãä¹±éã§ãäžè²«æ§ã®ãªããã©ãŒãããã§ãäžæçãªåœåèŠåã䜿çšããŠããå Žåãå ±ææ©èœã®ãããã°ã¯å€§ããªé害ãšãªãåŸãŸããåéçºè ãã³ãŒããç°ãªãæ¹æ³ã§è§£éãã誀解ãé å»¶ã«ã€ãªããå¯èœæ§ããããŸããéã«ããã®æçããšæ§é ã«ãã£ãŠç¹åŸŽã¥ããããã¯ãªãŒã³ã³ãŒãã¯ããããã®ææ§ããæå°éã«æããããçµæåã®ããçç£çãªããŒã ç°å¢ãè²ã¿ãŸãã
å¯èªæ§ã®ããã®ã¯ãªãŒã³ã³ãŒãã®äž»èŠãªæ±
ãããŒãã»Cã»ããŒãã£ã³ïŒã¢ã³ã¯ã«ã»ããïŒã«ãã£ãŠåºããããã¯ãªãŒã³ã³ãŒãã®æŠå¿µã¯ãããã€ãã®äžå¿çãªååãå«ãã§ããŸããèªã¿ãããå®è£ ãéæããããã«æãéèŠãªãã®ã«ã€ããŠæãäžããŠã¿ãŸãããïŒ
1. æå³ã®ããååïŒç¬¬äžã®é²åŸ¡ç·
倿°ã颿°ãã¯ã©ã¹ããã¡ã€ã«ã«éžã¶ååã¯ãã³ãŒãã®æå³ãäŒããäž»èŠãªææ®µã§ããè±èªãå ±éèªã§ããããšãå€ããã®ã®ã誰ããæ¯åœèªãšããŠããããã§ã¯ãªãã°ããŒãã«ãªæèã§ã¯ãæçããããã«éèŠã«ãªããŸãã
- æå³ãæããã«ããïŒ ååã¯ããšã³ãã£ãã£ãäœããããããŸãã¯äœã衚ãããæç¢ºã«ç€ºãã¹ãã§ããäŸãã°ãæ¥ã衚ã `d` ã§ã¯ãªã `elapsedDays` ã䜿ããŸããè€éãªæäœã« `process()` ã䜿ãã®ã§ã¯ãªãã`processCustomerOrder()` ã `calculateInvoiceTotal()` ã䜿ããŸãã
- ãšã³ã³ãŒãã£ã³ã°ãé¿ããïŒ ãã³ã¬ãªã¢ã³èšæ³ïŒäŸïŒ`strName`ã`iCount`ïŒã®ãããªãæèããæšæž¬ã§ããæ å ±ãåã蟌ãŸãªãã§ãã ãããçŸä»£ã®IDEã¯åæ å ±ãæäŸããããããããã¯åé·ã§ãã°ãã°æ··ä¹±ãæããŸãã
- æå³ã®ããåºå¥ãããïŒ äŒŒãããŠããããŸãã¯äžæåãä»»æã®æ°åã ãã§ç°ãªãååã®äœ¿çšã¯é¿ããŠãã ãããäŸãã°ã`Product1`ã`Product2` 㯠`ProductActive`ã`ProductInactive` ãããæ å ±éãå°ãªãã§ãã
- çºé³ããããååã䜿ãïŒ é«åºŠã«æè¡çãªæèã§ã¯åžžã«å¯èœãšã¯éããŸããããçºé³ããããååã¯ããŒã ã§ã®å£é ã§ã®ã³ãã¥ãã±ãŒã·ã§ã³ãå©ããŸãã
- æ€çŽ¢ããããååã䜿ãïŒ äžæåã®å€æ°åããããŸããªç¥èªã¯ãå€§èŠæš¡ãªã³ãŒãããŒã¹å ã§èŠã€ããã®ãé£ããããšããããŸããæ€çŽ¢æ©èœã§ç°¡åã«èŠã€ãããã説æçãªååãéžã³ãŸãããã
- ã¯ã©ã¹åïŒ åè©ãŸãã¯åè©å¥ã§ããã¹ãã§ããã°ãã°æŠå¿µããšã³ãã£ãã£ã衚ããŸãïŒäŸïŒ`Customer`ã`OrderProcessor`ã`DatabaseConnection`ïŒã
- ã¡ãœããåïŒ åè©ãŸãã¯åè©å¥ã§ããã¹ãã§ãã¡ãœãããå®è¡ããã¢ã¯ã·ã§ã³ãèšè¿°ããŸãïŒäŸïŒ`getUserDetails()`ã`saveOrder()`ã`validateInput()`ïŒã
ã°ããŒãã«ãªäŸïŒ eã³ããŒã¹ãã©ãããã©ãŒã ã«åãçµãããŒã ãæ³åããŠã¿ãŠãã ããã`custInfo` ãšããååã®å€æ°ã¯ææ§ãããããŸãããããã¯é¡§å®¢æ å ±ãªã®ããã³ã¹ãææ°ãªã®ãããããšãäœãä»ã®ãã®ãªã®ãïŒ `customerDetails` ã `shippingAddress` ã®ãããªãã説æçãªååã¯ãéçºè ã®èšèªçèæ¯ã«é¢ãããã誀解ã®äœå°ãæ®ããŸããã
2. 颿°ïŒå°ãããçŠç¹ãçµãããåäžç®ç
颿°ã¯ããããããã°ã©ã ã®æ§æèŠçŽ ã§ããã¯ãªãŒã³ãªé¢æ°ã¯çããäžã€ã®ããšãè¡ãããããããŸãè¡ããŸãããã®ååã«ããã颿°ã®çè§£ããã¹ããåå©çšã容æã«ãªããŸãã
- å°ããïŒ æ°è¡ä»¥å ã®é¢æ°ãç®æããŸãã颿°ã倧ãããªãå Žåã¯ããããå€ãããããšãããŠããå åã§ãããããå°ãã管çããããåäœã«åå²ã§ãããããããŸããã
- äžã€ã®ããšãããïŒ å颿°ã¯åäžã®ãæç¢ºã«å®çŸ©ãããç®çãæã€ã¹ãã§ãã颿°ãè€æ°ã®ç°ãªãã¿ã¹ã¯ãå®è¡ããå Žåãããã¯å¥ã ã®é¢æ°ã«ãªãã¡ã¯ã¿ãªã³ã°ãããã¹ãã§ãã
- 説æçãªååïŒ åè¿°ã®éãã颿°åã¯æç¢ºã«ãã®ç®çã衚çŸããªããã°ãªããŸããã
- å¯äœçšããªãïŒ é¢æ°ã¯ããããæç€ºçãªç®çïŒäŸïŒã»ãã¿ãŒã¡ãœããïŒã§ãªãéããçæ³çã«ã¯ãã®ã¹ã³ãŒãå€ã®ç¶æ ã倿Žããããšãªããæå³ããã¢ã¯ã·ã§ã³ãå®è¡ãã¹ãã§ããããã«ãããã³ãŒãã¯äºæž¬å¯èœã§ãæšè«ãããããªããŸãã
- åŒæ°ã¯å°ãªãïŒ å€ãã®åŒæ°ãæã€é¢æ°ã¯ãæ±ãã«ãããæ£ããåŒã³åºãã®ãé£ãããªãå¯èœæ§ããããŸããé¢é£ããåŒæ°ããªããžã§ã¯ãã«ãŸãšããããå¿ èŠã§ããã°ãã«ããŒãã¿ãŒã³ã䜿çšããããšãæ€èšããŠãã ããã
- ãã©ã°åŒæ°ãé¿ããïŒ ããŒã«å€ã®ãã©ã°ã¯ã颿°ãå€ãã®ããšãããããšããŠããããšããã°ãã°ç€ºããŸãã代ããã«ãåã±ãŒã¹ã«å¯Ÿå¿ããå¥ã ã®é¢æ°ãäœæããããšãæ€èšããŠãã ããã
ã°ããŒãã«ãªäŸïŒ `calculateShippingAndTax(order)` ãšãã颿°ãèããŠã¿ãŸãããããã®é¢æ°ã¯ããããã2ã€ã®ç°ãªãæäœãå®è¡ããŠããŸããããã `calculateShippingCost(order)` ãš `calculateTax(order)` ã«ãªãã¡ã¯ã¿ãªã³ã°ããäž¡æ¹ãåŒã³åºãé«ã¬ãã«ã®é¢æ°ãæã€æ¹ãã¯ãªãŒã³ã§ãã
3. ã³ã¡ã³ãïŒèšèãè¶³ããªããšããããã䜿ããããªã
ã³ã¡ã³ãã¯ãã³ãŒãèªäœããäœãã説æãã¹ããªã®ã§ãããªããäœããè¡ãããã®ãã説æããããã«äœ¿çšãããã¹ãã§ããã³ã¡ã³ããå€ããããšã³ãŒããä¹±éã«ãªããææ°ã®ç¶æ ã«ä¿ãããŠããªãå Žåã¯ã¡ã³ããã³ã¹ã®è² æ ã«ãªããŸãã
- æå³ã説æããïŒ è€éãªã¢ã«ãŽãªãºã ãããžãã¹ããžãã¯ããŸãã¯ç¹å®ã®èšèšéžæã®èåŸã«ããçç±ãæç¢ºã«ããããã«ã³ã¡ã³ãã䜿çšããŸãã
- åé·ãªã³ã¡ã³ããé¿ããïŒ ã³ãŒããè¡ã£ãŠããããšãåã«èšãæããã ãã®ã³ã¡ã³ãïŒäŸïŒ`// ã«ãŠã³ã¿ãŒãã€ã³ã¯ãªã¡ã³ã`ïŒã¯äžèŠã§ãã
- ã³ãŒãã ãã§ãªããšã©ãŒã«ãã³ã¡ã³ãããïŒ å€éšã®å¶çŽã«ãããçæ³çãšã¯èšããªãã³ãŒããæžããªããã°ãªããªãããšããããŸããããã説æããã³ã¡ã³ãã¯éåžžã«äŸ¡å€ããããŸãã
- ã³ã¡ã³ããææ°ã®ç¶æ ã«ä¿ã€ïŒ å€ãã³ã¡ã³ãã¯ãéçºè ã誀解ãããå¯èœæ§ããããããã³ã¡ã³ãããªããããæªãã§ãã
ã°ããŒãã«ãªäŸïŒ ç¹å®ã®ã³ãŒããã¬ã¬ã·ãŒã·ã¹ãã ã®çµ±åã®ããã«æšæºçãªã»ãã¥ãªãã£ãã§ãã¯ããã€ãã¹ããªããã°ãªããªãå Žåããã®æ±ºå®ã説æããã³ã¡ã³ããšãé¢é£ãã課é¡è¿œè·¡ã·ã¹ãã ãžã®åç §ã¯ãåŸã§ãããç®ã«ããéçºè ã«ãšã£ãŠããã®ã»ãã¥ãªãã£èæ¯ã«é¢ãããéåžžã«éèŠã§ãã
4. ãã©ãŒããããšã€ã³ãã³ãïŒèŠèŠçãªæ§é
äžè²«ãããã©ãŒãããã¯ãã³ãŒããèŠèŠçã«æŽçããã¹ãã£ã³ããããããŸããç¹å®ã®ã¹ã¿ã€ã«ã¬ã€ãã¯èšèªãããŒã ã«ãã£ãŠç°ãªããããããŸããããæ ¹åºã«ããååã¯çµ±äžæ§ã§ãã
- äžè²«ããã€ã³ãã³ãïŒ ã¹ããŒã¹ãŸãã¯ã¿ããäžè²«ããŠäœ¿çšããŠãã³ãŒããããã¯ã瀺ããŸããã»ãšãã©ã®çŸä»£ã®IDEã¯ãããã匷å¶ããããã«èšå®ã§ããŸãã
- 空çœïŒ 颿°å ã®è«ççãªã³ãŒããããã¯ãåºåãããã«ç©ºçœã广çã«äœ¿çšããèªã¿ãããããŸãã
- è¡ã®é·ãïŒ æ°Žå¹³ã¹ã¯ããŒã«ãé¿ããããã«ãè¡ãé©åºŠã«çãä¿ã¡ãŸããããã¯èªæžã®ãããŒã劚ããå¯èœæ§ããããŸãã
- æ³¢æ¬åŒ§ã®ã¹ã¿ã€ã«ïŒ æ³¢æ¬åŒ§ã®äžè²«ããã¹ã¿ã€ã«ïŒäŸïŒK&RãŸãã¯AllmanïŒãéžæããããã«åºå·ããŸãã
ã°ããŒãã«ãªäŸïŒ èªåãã©ãŒãããããŒã«ãšãªã³ã¿ãŒã¯ãã°ããŒãã«ããŒã ã«ãããŠéåžžã«äŸ¡å€ããããŸãããããã¯ãå人ã®å¥œã¿ãå°åã®ã³ãŒãã£ã³ã°ç¿æ £ã«é¢ä¿ãªããäºåã«å®çŸ©ãããã¹ã¿ã€ã«ã¬ã€ããèªåçã«åŒ·å¶ãããã¹ãŠã®è²¢ç®ã«ããã£ãŠäžè²«æ§ãä¿èšŒããŸããPrettierïŒJavaScriptçšïŒãBlackïŒPythonçšïŒãgofmtïŒGoçšïŒãªã©ã®ããŒã«ã¯åªããäŸã§ãã
5. ãšã©ãŒåŠçïŒäžå¯§ã§æçãªæ å ±
å ç¢ãªãšã©ãŒåŠçã¯ãä¿¡é Œæ§ã®é«ããœãããŠã§ã¢ãæ§ç¯ããããã«äžå¯æ¬ ã§ããã¯ãªãŒã³ãªãšã©ãŒåŠçã«ã¯ããšã©ãŒãæç¢ºã«éç¥ãã解決ã®ããã®ååãªã³ã³ããã¹ããæäŸããããšãå«ãŸããŸãã
- äŸå€ãé©åã«äœ¿çšããïŒ å€ãã®èšèªã§ã¯ããšã©ãŒã³ãŒããè¿ããããäŸå€ã䜿çšããããšã奜ãŸããŸãããªããªããäŸå€ã¯éåžžã®å®è¡ãããŒãšãšã©ãŒåŠçãæç¢ºã«åé¢ããããã§ãã
- ã³ã³ããã¹ããæäŸããïŒ ãšã©ãŒã¡ãã»ãŒãžã¯ãæ©å¯æ§ã®é«ãå éšè©³çްãå ¬éããããšãªããäœãééã£ãŠããã®ãããããŠãã®çç±ã説æããæçãªãã®ã§ããã¹ãã§ãã
- nullãè¿ããªãïŒ `null` ãè¿ããš NullPointerException ãšã©ãŒã«ã€ãªããå¯èœæ§ããããŸãã該åœããå Žåã¯ã空ã®ã³ã¬ã¯ã·ã§ã³ãè¿ããããªãã·ã§ãã«åã䜿çšããããšãæ€èšããŠãã ããã
- ç¹å®ã®äŸå€ã¿ã€ãã䜿çšããïŒ ããçãçµã£ããšã©ãŒåŠçãå¯èœã«ããããã«ãæ±çšçãªãã®ã§ã¯ãªãç¹å®ã®äŸå€ã¿ã€ãã䜿çšããŸãã
ã°ããŒãã«ãªäŸïŒ åœéçãªæ¯æããåŠçããã¢ããªã±ãŒã·ã§ã³ã§ããæ¯æãã«å€±æããŸããããšãããšã©ãŒã¡ãã»ãŒãžã¯äžååã§ãããæ¯æãæ¿èªã«å€±æããŸããïŒã«ãŒãçªå·XXXXã§çµããã«ãŒãã®æå¹æéãç¡å¹ã§ããã®ãããªããæçãªã¡ãã»ãŒãžã¯ããŠãŒã¶ãŒããµããŒãã¹ã¿ãããæè¡çãªå°éç¥èãå Žæã«é¢ããããåé¡ã«å¯ŸåŠããããã«å¿ èŠãªè©³çްãæäŸããŸãã
6. SOLIDååïŒä¿å®å¯èœãªã·ã¹ãã ã®æ§ç¯
SOLIDååïŒåäžè²¬ä»»ããªãŒãã³/ã¯ããŒãºãããªã¹ã³ãã®çœ®æãã€ã³ã¿ãŒãã§ãŒã¹åé¢ãäŸåæ§é転ïŒã¯ããã°ãã°ãªããžã§ã¯ãæåèšèšã«é¢é£ä»ããããŸãããåé¢ãããä¿å®å¯èœã§ãæ¡åŒµå¯èœãªã³ãŒããäœæãããšãããã®ç²Ÿç¥ã¯æ®éçã«é©çšå¯èœã§ãã
- åäžè²¬ä»»ã®ååïŒSRPïŒïŒ ã¯ã©ã¹ãã¢ãžã¥ãŒã«ã¯ã倿Žããçç±ãäžã€ã ãã§ããã¹ãã§ããããã¯ã颿°ãïŒã€ã®ããšãè¡ããšããååãšäžèŽããŸãã
- ãªãŒãã³/ã¯ããŒãºãã®ååïŒOCPïŒïŒ ãœãããŠã§ã¢ãšã³ãã£ãã£ïŒã¯ã©ã¹ãã¢ãžã¥ãŒã«ã颿°ãªã©ïŒã¯ãæ¡åŒµã«å¯ŸããŠã¯éãããŠããã¹ãã§ãããä¿®æ£ã«å¯ŸããŠã¯éããããŠããã¹ãã§ããããã¯ããªã°ã¬ãã·ã§ã³ãå°å ¥ããããšãªãæ¡åŒµæ§ãä¿é²ããŸãã
- ãªã¹ã³ãã®çœ®æååïŒLSPïŒïŒ ãµãã¿ã€ãã¯ãããã°ã©ã ã®æ£ãããå€ããããšãªãããã®ããŒã¹ã¿ã€ãã«çœ®ãæãå¯èœã§ãªããã°ãªããŸãããããã«ãããç¶æ¿éå±€ãé©åã«æ¯ãèãããšãä¿èšŒãããŸãã
- ã€ã³ã¿ãŒãã§ãŒã¹åé¢ã®ååïŒISPïŒïŒ ã¯ã©ã€ã¢ã³ãã¯ã䜿çšããªãã€ã³ã¿ãŒãã§ãŒã¹ã«äŸåããããšã匷å¶ãããã¹ãã§ã¯ãããŸãããããå°ãããããå ·äœçãªã€ã³ã¿ãŒãã§ãŒã¹ã奜ã¿ãŸãã
- äŸåæ§é転ã®ååïŒDIPïŒïŒ é«ã¬ãã«ã¢ãžã¥ãŒã«ã¯äœã¬ãã«ã¢ãžã¥ãŒã«ã«äŸåãã¹ãã§ã¯ãããŸãããäž¡æ¹ãšãæœè±¡ã«äŸåãã¹ãã§ããæœè±¡ã¯è©³çްã«äŸåãã¹ãã§ã¯ãããŸãããè©³çŽ°ã¯æœè±¡ã«äŸåãã¹ãã§ããããã¯ãã¹ãå¯èœæ§ãšæè»æ§ã®éµã§ãã
ã°ããŒãã«ãªäŸïŒ ããŸããŸãªæ±ºæžã²ãŒããŠã§ã€ïŒäŸïŒStripeãPayPalãAdyenïŒããµããŒãããå¿ èŠãããã·ã¹ãã ãæ³åããŠã¿ãŠãã ãããOCPãšDIPã«åŸãããšã§ãæ¢åã®ã³ãŒãã倿Žããã®ã§ã¯ãªããå ±éã® `PaymentGateway` ã€ã³ã¿ãŒãã§ãŒã¹ã®æ°ããå®è£ ãäœæããããšã§ãæ°ããæ±ºæžã²ãŒããŠã§ã€ã远å ã§ããŸããããã«ãããã·ã¹ãã ã¯ã°ããŒãã«ãªåžå Žã®ããŒãºãšé²åããæ±ºæžæè¡ã«é©å¿å¯èœã«ãªããŸãã
7. éè€ã®åé¿ïŒDRYåå
DRYïŒDon't Repeat YourselfïŒååã¯ãä¿å®å¯èœãªã³ãŒãã®åºæ¬ã§ããéè€ããã³ãŒãã¯ãšã©ãŒã®å¯èœæ§ãé«ããæŽæ°ãããæéã®ããããã®ã«ããŸãã
- å埩çãªãã¿ãŒã³ãç¹å®ããïŒ è€æ°ååºçŸããã³ãŒããããã¯ãæ¢ããŸãã
- 颿°ãã¯ã©ã¹ã«æœåºããïŒ éè€ããããžãã¯ãåå©çšå¯èœãªé¢æ°ãã¡ãœããããŸãã¯ã¯ã©ã¹ã«ã«ãã»ã«åããŸãã
- èšå®ãã¡ã€ã«ã䜿çšããïŒ å€æŽãããå¯èœæ§ã®ããå€ãããŒãã³ãŒãã£ã³ã°ããã®ãé¿ããèšå®ãã¡ã€ã«ã«ä¿åããŸãã
ã°ããŒãã«ãªäŸïŒ æ¥ä»ãšæå»ã衚瀺ããWebã¢ããªã±ãŒã·ã§ã³ãèããŠã¿ãŠãã ãããæ¥ä»ã®ãã©ãŒãããããžãã¯ãè€æ°ã®å ŽæïŒäŸïŒãŠãŒã¶ãŒãããã¡ã€ã«ã泚æå±¥æŽïŒã§ç¹°ãè¿ãããŠããå Žåãåäžã® `formatDateTime(timestamp)` 颿°ãäœæã§ããŸããããã«ããããã¹ãŠã®æ¥ä»è¡šç€ºãåããã©ãŒãããã䜿çšããããšãä¿èšŒãããå¿ èŠã«å¿ããŠãã©ãŒãããã«ãŒã«ãã°ããŒãã«ã«æŽæ°ããããšã容æã«ãªããŸãã
8. èªã¿ãããå¶åŸ¡æ§é
ã«ãŒããæ¡ä»¶åå²ããã®ä»ã®å¶åŸ¡ãããŒã¡ã«ããºã ãã©ã®ããã«æ§æãããã¯ãå¯èªæ§ã«å€§ãã圱é¿ããŸãã
- ãã¹ããæå°éã«æããïŒ æ·±ããã¹ãããã `if-else` æãã«ãŒãã¯è¿œè·¡ãå°é£ã§ããããããããå°ããªé¢æ°ã«ãªãã¡ã¯ã¿ãªã³ã°ããããã¬ãŒãç¯ã䜿çšããŸãã
- æå³ã®ããæ¡ä»¶åŒã䜿çšããïŒ èª¬æçãªååãæã€ããŒã«å€æ°ã䜿çšãããšãè€éãªæ¡ä»¶ãçè§£ãããããªããŸãã
- å¢çã®ãªãã«ãŒãã«ã¯ `for` ããã `while` ã奜ãïŒ ååŸ©åæ°ãäºåã«ããããªãå Žåã`while` ã«ãŒãã®æ¹ã衚çŸåè±ãã§ããããšãå€ãã§ãã
ã°ããŒãã«ãªäŸïŒ è§£æãå°é£ãããããªããã¹ããã `if-else` æ§é ã®ä»£ããã«ãããžãã¯ãæç¢ºãªååãæã€å¥ã ã®é¢æ°ã«æœåºããããšãæ€èšããŠãã ãããäŸãã°ã`isUserEligibleForDiscount(user)` ãšãã颿°ã¯ãè€éãªé©æ Œæ§ãã§ãã¯ãã«ãã»ã«åããã¡ã€ã³ã®ããžãã¯ãããã¯ãªãŒã³ã«ããŸãã
9. ãŠããããã¹ãïŒã¯ãªãŒã³ãã®ä¿èšŒ
ãŠããããã¹ããæžãããšã¯ãã¯ãªãŒã³ã³ãŒãã®äžå¯æ¬ ãªéšåã§ãããã¹ãã¯çããããã¥ã¡ã³ããšããŠæ©èœãããªã°ã¬ãã·ã§ã³ã«å¯Ÿããã»ãŒããã£ããããšãªãã倿Žãæ¢åã®æ©èœãå£ããªãããšãä¿èšŒããŸãã
- ãã¹ãå¯èœãªã³ãŒãïŒ SRPãSOLIDãžã®æºæ ã®ãããªã¯ãªãŒã³ã³ãŒãã®ååã¯ãèªç¶ãšãããã¹ãããããã³ãŒãã«ã€ãªãããŸãã
- æå³ã®ãããã¹ãåïŒ ãã¹ãåã¯ãã©ã®ã·ããªãªããã¹ããããŠãããããããŠæåŸ ãããçµæãäœããæç¢ºã«ç€ºãã¹ãã§ãã
- Arrange-Act-AssertïŒ ã»ããã¢ãããå®è¡ãæ€èšŒã®æç¢ºãªãã§ãŒãºã§ãã¹ããæ§é åããŸãã
ã°ããŒãã«ãªäŸïŒ æ§ã ãªé貚ãã¢ããšããžã±ãŒã¹ïŒäŸïŒãŒããè² ã®å€ãéå»ã®çºæ¿ã¬ãŒãïŒãã«ããŒãããã¹ããåãããååã«ãã¹ããããé貚æç®ã³ã³ããŒãã³ãã¯ãäžçäžã®éçºè ã«ã倿§ãªéèååŒãæ±ãéã«ãã³ã³ããŒãã³ããæåŸ éãã«æ¯ãèããšããèªä¿¡ãäžããŸãã
ã°ããŒãã«ããŒã ã§ã¯ãªãŒã³ã³ãŒããéæãã
忣ããããŒã å šäœã§ã¯ãªãŒã³ã³ãŒãã®å®è·µã广çã«å®æœããã«ã¯ãæèçãªåªåãšç¢ºç«ãããããã»ã¹ãå¿ èŠã§ãïŒ
- ã³ãŒãã£ã³ã°èŠçŽã確ç«ããïŒ åœåèŠåããã©ãŒãããããã¹ããã©ã¯ãã£ã¹ãããã³äžè¬çãªã¢ã³ããã¿ãŒã³ãã«ããŒããå æ¬çãªã³ãŒãã£ã³ã°èŠçŽã«åæããŸãããã®èŠçŽã¯ããã®ååã«ãããŠã¯èšèªã«äŸåããªãã¹ãã§ããã䜿çšãããåèšèªãžã®é©çšã«ãããŠã¯å ·äœçã§ããã¹ãã§ãã
- ã³ãŒãã¬ãã¥ãŒããã»ã¹ã掻çšããïŒ å ç¢ãªã³ãŒãã¬ãã¥ãŒã¯äžå¯æ¬ ã§ããå¯èªæ§ãä¿å®æ§ãããã³èŠçŽãžã®æºæ ã«çŠç¹ãåœãŠã建èšçãªãã£ãŒãããã¯ã奚å±ããŸããããã¯ãããŒã å šäœã§ã®ç¥èå ±æãšã¡ã³ã¿ãŒã·ããã®ããã®çµ¶å¥œã®æ©äŒã§ãã
- ãã§ãã¯ãèªååããïŒ CI/CDãã€ãã©ã€ã³ã«ãªã³ã¿ãŒãšãã©ãŒããã¿ãŒãçµ±åããŠãã³ãŒãã£ã³ã°èŠçŽãèªåçã«åŒ·å¶ããŸããããã«ããã䞻芳æ§ãæé€ãããäžè²«æ§ã確ä¿ãããŸãã
- æè²ãšãã¬ãŒãã³ã°ã«æè³ããïŒ ã¯ãªãŒã³ã³ãŒãã®ååãšãã¹ããã©ã¯ãã£ã¹ã«é¢ãã宿çãªãã¬ãŒãã³ã°ã»ãã·ã§ã³ãæäŸããŸãããªãœãŒã¹ãæžç±ãèšäºãå ±æããŸãã
- åè³ªã®æåãä¿é²ããïŒ ãžã¥ãã¢éçºè ããã·ãã¢ã¢ãŒããã¯ããŸã§ã誰ããã³ãŒãå質ãéèŠããç°å¢ãè²ã¿ãŸããéçºè ãæ¢åã®ã³ãŒãããªãã¡ã¯ã¿ãªã³ã°ããŠæçããåäžãããããšã奚å±ããŸãã
- ãã¢ããã°ã©ãã³ã°ãåãå ¥ããïŒ éèŠãªã»ã¯ã·ã§ã³ãè€éãªããžãã¯ã«ã€ããŠã¯ããã¢ããã°ã©ãã³ã°ãã³ãŒãå質ãšç¥è移転ãå€§å¹ ã«åäžãããããšãã§ããç¹ã«å€æ§ãªããŒã ã«ãããŠæå¹ã§ãã
èªã¿ãããå®è£ ã®é·æçã¡ãªãã
ã¯ãªãŒã³ã³ãŒããæžãããšã«æéãæè³ããããšã¯ãé·æçã«å€§ããªå©ç¹ããããããŸãïŒ
- ã¡ã³ããã³ã¹ã³ã¹ãã®åæžïŒ èªã¿ãããã³ãŒãã¯çè§£ããããããããã°ãä¿®æ£ã容æãªãããã¡ã³ããã³ã¹ã®ãªãŒããŒããããäœæžããŸãã
- éçºãµã€ã¯ã«ã®é«éåïŒ ã³ãŒããæç¢ºã§ããã°ãéçºè ã¯æ°ããæ©èœãå®è£ ãããã°ãããè¿ éã«ä¿®æ£ã§ããŸãã
- ã³ã©ãã¬ãŒã·ã§ã³ã®åäžïŒ ã¯ãªãŒã³ã³ãŒãã¯ã忣ããããŒã éã®ã·ãŒã ã¬ã¹ãªã³ã©ãã¬ãŒã·ã§ã³ãä¿é²ããã³ãã¥ãã±ãŒã·ã§ã³ã®éå£ãåãé€ããŸãã
- ãªã³ããŒãã£ã³ã°ã®åŒ·åïŒ æ°ããããŒã ã¡ã³ããŒã¯ãããæ§é åãããçè§£ããããã³ãŒãããŒã¹ã§ãããéãæ¥åã«æ £ããããšãã§ããŸãã
- ãœãããŠã§ã¢ã®ä¿¡é Œæ§ã®åäžïŒ ã¯ãªãŒã³ã³ãŒãã®ååãžã®æºæ ã¯ããã°ãã°ãã°ã®æžå°ãšããå ç¢ãªãœãããŠã§ã¢ãšçžé¢ããŸãã
- éçºè ã®æºè¶³åºŠïŒ ã¯ãªãŒã³ã§ããæŽçãããã³ãŒãã§äœæ¥ããããšã¯ãããæ¥œããããã©ã¹ãã¬ãŒã·ã§ã³ãå°ãªããéçºè ã®å£«æ°ãšå®ççã®åäžã«ã€ãªãããŸãã
çµè«
ã¯ãªãŒã³ã³ãŒãã¯åãªãäžé£ã®ã«ãŒã«ä»¥äžã®ãã®ã§ãããããã¯è·äººæãžã®ãã€ã³ãã»ããã§ããã³ãããã¡ã³ãã§ããã°ããŒãã«ãªãœãããŠã§ã¢éçºã³ãã¥ããã£ã«ãšã£ãŠãèªã¿ãããå®è£ ãåãå ¥ããããšã¯ãæåããã¹ã±ãŒã©ãã«ã§ãä¿å®å¯èœãªãœãããŠã§ã¢ãæ§ç¯ããäžã§éèŠãªèŠçŽ ã§ããæå³ã®ããååãç°¡æœãªé¢æ°ãæç¢ºãªãã©ãŒããããå ç¢ãªãšã©ãŒåŠçããããŠäžæ žãšãªãèšèšååãžã®æºæ ã«çŠç¹ãåœãŠãããšã§ãäžçäžã®éçºè ã¯ãã广çã«ååããèªåèªèº«ããããŠå°æ¥ã®äžä»£ã®éçºè ã«ãšã£ãŠæ±ãã®ã楜ãããœãããŠã§ã¢ãäœæããããšãã§ããŸãã
ãœãããŠã§ã¢éçºã®æ ãé²ããäžã§ã仿¥æžããã³ãŒãã¯ææ¥èª°ãã«ãã£ãŠèªãŸããããšãå¿ããªãã§ãã ãã â ããã¯å°çã®å察åŽã«ãã誰ããããããŸããããããæç¢ºã«ãç°¡æœã«ããããŠã¯ãªãŒã³ã«ããŸãããã